#include <iostream>
#include "server.h"
#include "./messages/message.h"
#include <fstream>
#include <stdint.h>
#include <iomanip>
#include <sstream>
#include "encode_desencode.h"
#include "server_configuration.h"

using namespace std;

//Tiene que recibir 4 argumentos
int main(int argc, char** argv) {
	//Aca se supone que le paso el path del archivo de config
	string s(argv[1]);
	ServerCfg cfg(&s);
	//Aca ya levante la configuracion
	string storage_path=cfg.GetStoragePath();
	unsigned int port=cfg.GetPort();
	Socket sock;
	string console_buffer;
	bool finish=false;
	//Inicio el thread del servidor
	Servidor serv(&cfg,&sock);
	serv.start();
	//Este ciclo no termina hasta que pongo q
	while (!finish) {
		console_buffer.clear();

		cin >> console_buffer;
		console_buffer.push_back('\n');
		finish = (console_buffer == "q\n");
	}
	//Si puse q, apago el socket para que no se quede bloqueado esperando.
	sock.Shutdown(2);
	//Espero a que termina el thread del server
	serv.join();

	return 0;
}

